package mappingOfObject;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
/**
 *
 * @author felipe
 */
@Entity
public class Sucursal implements Serializable{
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="seq_gen")
    @SequenceGenerator(name="seq_gen", sequenceName="SUCURSAL_SEQUENCE")
    private long id;
    private String direccion;
    private float latitud;
    private float longitud;
    private boolean visible;
    @ManyToOne(cascade = CascadeType.ALL, fetch= FetchType.EAGER)
    @Fetch(value = FetchMode.SELECT)
    private Usuario usuario;

    @ManyToMany(cascade=CascadeType.ALL, fetch= FetchType.EAGER)
    private List<Oferta> ofertas = new ArrayList<Oferta>();


    public Sucursal() {
    }

    public Sucursal(long id, String direccion, float latitud, float longitud, boolean visible, Usuario usuario) {
        this.id = id;
        this.direccion = direccion;
        this.latitud = latitud;
        this.longitud = longitud;
        this.visible = visible;
        this.usuario = usuario;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public float getLatitud() {
        return latitud;
    }

    public void setLatitud(float latitud) {
        this.latitud = latitud;
    }

    public float getLongitud() {
        return longitud;
    }

    public void setLongitud(float longitud) {
        this.longitud = longitud;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public boolean isVisible() {
        return visible;
    }

    public void setVisible(boolean visible) {
        this.visible = visible;
    }

    public List<Oferta> getOfertas() {
        return ofertas;
    }

    public void setOfertas(List<Oferta> ofertas) {
        this.ofertas = ofertas;
    }

    public void addOferta(Oferta oferta)
    {
        this.ofertas.add(oferta);
    }
}